1. Field of the Invention
This invention relates to computer systems and, more particularly, to management of input/output errors in storage environments employing asymmetric distributed block virtualization techniques.
2. Description of the Related Art
Many business organizations and governmental entities rely upon applications that access large amounts of data, often exceeding a terabyte or more of data, for mission-critical applications. Often such data is stored on many different storage devices, which may be centrally located or distributed throughout an enterprise. Such storage devices may be heterogeneous in nature, including many different types of devices from many different manufacturers.
Configuring individual applications that consume data, or application server systems that host such applications, to recognize and directly interact with each different storage device that may possibly be encountered in a heterogeneous storage environment would be increasingly difficult as the environment scaled in size and complexity. Therefore, in some storage environments, specialized storage management software and hardware may be used to provide a more uniform storage model to storage consumers. Such software and hardware may also be configured to add storage features not present in individual storage devices to the storage model. For example, features to increase fault tolerance, such as data mirroring, snapshot/fixed image creation, or data parity, as well as features to increase data access performance, such as disk striping, may be implemented in the storage model via hardware or software.
In such storage environments, an input/output (I/O) operation issued by a data consumer may sometimes result in failure (that is, an I/O error message may be returned to the data consumer instead of an indication of success) due to a variety of reasons. Failures may be caused, for example, by a loss of connectivity between storage devices and the data consumer, a hardware failure at a storage device, or a software failure at some layer in the storage software stack. In general, in response to an I/O error, an effort to determine the source of the error may be made, and corrective action may be taken to repair the storage environment if necessary. The corrective action may include making one or more storage devices unavailable to some data consumers for a period of time. In a storage environment where multiple paths may be available to access a given physical storage device, not all data consumers may need to respond to a given type of I/O error in the same manner, especially in cases where the response may include making some storage unavailable to other data consumers. Requiring that all data consumers use a uniform approach in responding to I/O errors in a complex storage environment may potentially result in suboptimal use of resources.